package com.nativetalk.service.live;

import com.nativetalk.base.Params;
import com.nativetalk.base.RetInfo;
import com.nativetalk.bean.TdNtReserve;
import com.nativetalk.bean.member.TdNtMember;
import com.nativetalk.bean.teacher.TdNtTeacherResult;
import io.netty.channel.Channel;

import java.util.List;

/**
 * Created by lizhun on 16/1/9.
 * Modified by wangzheng on 17/02/25
 */
public interface LiveService {
    /**
     * @Purpose  点亮
     * @version  3.0
     * @author   lizhun
     * @param    params
     * @return   RetInfo
     */
    public RetInfo light(Params params);
    /**
     * @Purpose  送礼物
     * @version  3.0
     * @author   lizhun
     * @param    params
     * @return   RetInfo
     */
    public RetInfo give(Params params);
    /**
     * @Purpose  查找所有的
     * @version  3.0
     * @author   lizhun
     * @param    live_cou_his_id
     * @return   List<TdNtMember>
     */
    public List<TdNtMember> findTdNtMemberByLive(int  live_cou_his_id);
    /**
     * @Purpose  查找直播老师
     * @version  3.0
     * @author   lizhun
     * @param    live_cou_his_id
     * @return   TdNtTeacherResult
     */
    public TdNtTeacherResult findTdNtTeacher(int live_cou_his_id);
    /**
     * @Purpose  指定课程随机呼叫老师
     * @version  3.0
     * @author   lizhun
     * @param     params
     * @return    RetInfo
     */
    public RetInfo randomKallTeacer(Params params, Channel channel) throws Exception;
    /**
     * @Purpose  指定课程指定老师呼叫
     * @version  3.0
     * @author   lizhun
     * @param     params
     * @return    RetInfo
     */
    public RetInfo kallTeacer(Params params, Channel channel) throws Exception;
    /**
     * @Purpose  指定老师呼叫自由话题
     * @version  3.0
     * @author   lizhun
     * @param     params
     * @return    RetInfo
     */
    public RetInfo kallTeacerFreeCourse(Params params, Channel channel) throws Exception;
    /**
     * @Purpose  接单或取消
     * @version  3.0
     * @author   lizhun
     * @param     params
     * @return    RetInfo
     */
    public RetInfo eceivingOrders(Params params) throws Exception;
    /**
     * @Purpose  结束
     * @version  3.0
     * @author   lizhun
     * @param     params
     * @return    RetInfo
     */
    public RetInfo endOrders(Params params);
    /**
     * @Purpose  结束
     * @version  3.0
     * @author   lizhun
     * @param     params
     * @return    RetInfo
     */
    public TdNtMember findTdNtMemberBySttId(Params params);
    /**
     * @Purpose  学生预约呼叫
     * @version  3.0
     * @author   lizhun
     * @param     params
     * @return    RetInfo
     */
    public RetInfo reserveStudentKall(Params params, Channel channel) throws Exception;
    /**
     * @Purpose  老师预约呼叫
     * @version  3.0
     * @author   lizhun
     * @param     params
     * @return    RetInfo
     */
    public RetInfo reserveTeacherKall(Params params, Channel channel)  throws Exception;
    /**
     * @Purpose  老师拒绝通话
     * @version  3.0
     * @author   lizhun
     * @param     params
     * @return    RetInfo
     */
    public RetInfo teacherRefuse(Params params, Channel channel);
    /**
     * @Purpose  学生拒绝通话
     * @version  3.0
     * @author   lizhun
     * @param     params
     * @return    RetInfo
     */
    public RetInfo studentRefuse(Params params, Channel channel);
    /**
     * @Purpose  学生接单
     * @version  3.0
     * @author   lizhun
     * @param     params
     * @return    RetInfo
     */
    public RetInfo eceivingStudentOrders(Params params) throws Exception;
    /**
     * @Purpose  送礼物
     * @version  3.0
     * @author   lizhun
     * @param    params
     * @return   RetInfo
     */
    public RetInfo givePurchase(Params params);
    /**
     * @Purpose  指定课程随机呼叫老师
     * @version  3.0
     * @author   lizhun
     * @param     params
     * @return    RetInfo
     */
    public RetInfo randomFreeKallTeacer(Params params, Channel channel) throws Exception;

    /**
     * @Purpose  学生加入聊天
     * @version  4.1
     * @author   wangzheng
     * @return    RetInfo
     */
    public RetInfo joinChat();

    /**
     * @Purpose  学生退出聊天
     * @version  4.1
     * @author   wangzheng
     * @return    RetInfo
     */
    public RetInfo exitChat();

    /**
     * @Purpose  学生直播课举手
     * @version  4.1
     * @author   wangzheng
     * @return    RetInfo
     */
    public RetInfo handsUp(Params params);

    /**
     * @Purpose  学生直播课放弃举手
     * @version  4.1
     * @author   wangzheng
     * @return    RetInfo
     */
    public RetInfo handsDown(Params params);

    /**
     * @Purpose  老师直播课让学生上麦
     * @version  4.1
     * @author   wangzheng
     * @return    RetInfo
     */
    public RetInfo letMembTalk(Params params);

    /**
     * @Purpose  老师直播课让学生下麦
     * @version  4.1
     * @author   wangzheng
     * @return    RetInfo
     */
    public RetInfo letMembStopTalk(Params params);

    /**
     * @Purpose  直播课学生下麦
     * @version  4.1
     * @author   wangzheng
     * @return    RetInfo
     */
    public RetInfo membStopTalk(Params params);

    /**
     * @Purpose  直播课学生开启或关闭摄像头
     * @version  4.1
     * @author   wangzheng
     * @return    RetInfo
     */
    public RetInfo openOrCloseCamera(Params params);

    /**
     * @Purpose  根据预约id查找学生信息
     * @version  4.1
     * @author   wangzheng
     * @return   TdNtMember
     */
    public TdNtMember findTdMembByReserveId(int reserve_id);
}
